<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
  <title>bdep-publish(1) bdep 0.17.0</title>

  <style type="text/css">
/* file      : common.css
 * license   : MIT; see accompanying LICENSE file
 */

html
{
  font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
  font-weight: normal;
  font-size: 18px;
  line-height: 1.4em;
  letter-spacing: 0.01em;

  color: #292929;
}

body {margin: 0;} /* There is non-0 default margin for body. */

/* See notes on what's going on here. */
body {min-width: 17em;}
@media only screen and (min-width: 360px)
{
  body {min-width: 19em;}
}

/*
 * Header (optional).
 */

#header-bar
{
  width: 100%;

  background: rgba(0, 0, 0, 0.04);
  border-bottom: 1px solid rgba(0, 0, 0, 0.2);

  padding: .4em 0 .42em 0;
  margin: 0 0 1.4em 0;
}

#header
{
  /* Same as in #content. */
  max-width: 41em;
  margin: 0 auto 0 auto;
  padding: 0 .4em 0 .4em;

  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;

  width: 100%;
  display: table;
  border: none;
  border-collapse: collapse;
}

#header-logo, #header-menu
{
  display: table-cell;
  border: none;
  padding: 0;
  vertical-align: middle;
}

#header-logo {text-align: left;}
#header-menu {text-align: right;}

/* These overlap with #header's margin because of border collapsing. */
#header-logo {padding-left: .4em;}
#header-menu {padding-right: .4em;}

#header-logo a
{
  color: #000;
  text-decoration: none;
  outline: none;
}
#header-logo a:visited {color: #000;}
#header-logo a:hover, #header-logo a:active {color: #000;}

#header-menu a
{
  font-size: 0.889em;
  line-height: 1.4em;
  text-align: right;
  margin-left: 1.2em;
  white-space: nowrap;
  letter-spacing: 0;
}

#header-menu a
{
  color: #000;
  outline: none;
}
#header-menu a:visited {color: #000;}
#header-menu a:hover, #header-menu a:active
{
  color: #3870c0;
  text-decoration: none;
}

/* Flexbox-based improvements though the above works reasonably well. */
#header-menu-body
{
  width: 100%;

  display: -webkit-inline-flex;
  display: inline-flex;

  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;

  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}

/* Whether we want it (and at which point) depends on the size of the menu. */
/*
@media only screen and (max-width: 567px)
{
  #header-menu-body
  {
    -webkit-flex-direction: column;
    flex-direction: column;
  }
}
*/

/*
 * Content.
 */

#content
{
  max-width: 41em;
  margin: 0 auto 0 auto;
  padding: 0 .4em 0 .4em; /* Space between text and browser frame. */

  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/*
 * Footer (optional).
 */

#footer
{
  color: #767676;
  font-size: 0.7223em;
  line-height: 1.3em;
  margin: 2.2em 0 1em 0;
  text-align: center;
}

#footer a
{
  color: #767676;
  text-decoration: underline;
}
#footer a:visited {color: #767676;}
#footer a:hover, #footer a:active {color: #3870c0;}

/* Screen size indicator in the footer. The before/after content is in case
   we don't have any content in the footer. Margin is to actually see the
   border separate from the browser frame. */

/*
#footer:before {content: "\A0";}
#footer:after {content: "\A0";}

#footer
{
  border-left: 1px solid;
  border-right: 1px solid;
  margin-left: 1px;
  margin-right: 1px;
}

@media only screen and (max-width: 359px)
{
  #footer {border-color: red;}
}

@media only screen and (min-width: 360px) and (max-width: 567px)
{
  #footer {border-color: orange;}
}

@media only screen and (min-width: 568px) and (max-width: 1023px)
{
  #footer {border-color: blue;}
}

@media only screen and (min-width: 1024px)
{
  #footer {border-color: green;}
}
*/

/*
 * Common elements.
 */

p, li, dd {text-align: justify;}
.code {text-align: left;} /* Manually aligned. */
pre {text-align: left;}   /* If it is inside li/dd. */

/* Notes. */

.note
{
  color: #606060;
}

div.note
{
  margin: 2em 0 2em 0; /* The same top/bottom margings as pre box. */

  padding-left: 0.5em;
  border: 0.25em;
  border-left-style: solid;
  border-color: #808080;

  page-break-inside: avoid;
}

div.note :first-child {margin-top:    0;}
div.note :last-child  {margin-bottom: 0;}

span.note::before {content: "[Note: "}
span.note::after  {content: "]"}

/* Links. */
a
{
  color: #3870c0;
  /*color: #4078c0;*/
  text-decoration: none;
}

a:hover, a:active
{
/*color: #006fbf;*/
/*color: #0087e7;*/
  text-decoration: underline;
}

a:visited
{
/*color: #003388;*/
  color: #00409c;
}

/* Standard paragraph. */

p, pre {margin: 1em 0 1em 0;}

/* Standard lists. */
ul, ol, dl {margin: 1em 0 1em 0;}
ul li, ol li {margin: 0 0 .4em 0;}
ul li {list-style-type: circle;}
dl dt {margin: 0 0 0 0;}
dl dd {margin: 0 0 .6em 1.8em;}

code, pre
{
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: 0.92em;
  letter-spacing: 0;
}

pre {white-space: pre-wrap;}
@media only screen and (max-width: 567px)
{
  pre {word-break: break-all;}
}

/* Use page rather than system font settings. */
input
{
  font-family: inherit;
  font-weight: inherit;
  font-size:   inherit;
  line-height: inherit;
}

/* file      : pre-box.css
 * license   : MIT; see accompanying LICENSE file
 */

/* Note: see also p-code-box.css. */

pre
{
  background-color: rgba(0, 0, 0, 0.05);
  border-radius: 0.2em;
  padding: .8em .4em .8em .4em;
  margin: 2em -.4em 2em -.4em; /* Use margins of #content. */
}

/* file      : man.css
 * license   : MIT; see accompanying LICENSE file
 */

/* Bases:
 *
 * common.css
 * pre-box.css
 *
 */

#content
{
  max-width: 42.1em;
  padding-left: 1.5em; /* Reserve for the heading. */
}

h1
{
  font-weight: normal;
  font-size: 1.58em;
  line-height: 1.4em;
  margin: 1.6em 0 .6em -.88em;
}

/* Definition list for options. */
dl.options dt {margin: 1em 0 0 0;}
dl.options dd {margin: .1em 0 0 4.5em;}

/* Make lists inside option descriptions a tad smaller. */
dl.options dd ul, dl.options dd ol, dl.options dd dl
{
  font-size: 0.889em;
  line-height: 1.4em;
}

  </style>

</head>
<body>
<div id="content">

  <h1>NAME</h1>

  <p><b><code>bdep-publish</code></b> &#8211; publish project to archive repository</p>
  <h1>SYNOPSIS</h1>

  <p class="code"><code><b>bdep publish</b> [<i>options</i>] [<i>cfg-spec</i>]
  [<i>pkg-spec</i>]</code></p>

  <p class="code"><code><i>pkg-spec</i> = (<b>--directory</b>|<b>-d</b>
  <i>pkg-dir</i>)... | <i>prj-spec</i>
  <br/>
  <i>prj-spec</i> = <b>--directory</b>|<b>-d</b> <i>prj-dir</i>
  <br/>
  <i>cfg-spec</i> = (<b>@</b><i>cfg-name</i> | <b>--config</b>|<b>-c</b>
  <i>cfg-dir</i>)... | <b>--all</b>|<b>-a</b> | <b>--forward</b></code></p>

  <h1>DESCRIPTION</h1>

  <p>The <code><b>publish</b></code> command publishes the project packages to
  an archive-based repository.</p>

  <p>If no project or package directory is specified, then the current working
  directory is assumed. If no configuration is specified, then the default
  configurations are used to prepare the package distributions. If the
  specified directory is a project directory, then all the packages in the
  project are published. See <a
  href="bdep-projects-configs.xhtml"><code><b>bdep-projects-configs(1)</b></code></a>
  for details on specifying projects and configurations.</p>

  <p>For each specified package the <code><b>publish</b></code> command
  prepares a package archive and sends it as part of the package submission
  request to an archive-based repository. If the repository is not explicitly
  specified with the <code><b>--repository</b></code> option, packages are
  published to <code><b>cppget.org</b></code> by default.</p>

  <p>Along with the package archive, the submission request specifies the
  repository section to publish the package under, the control repository URL
  to use for authorization, and the publisher's name and email address for the
  record. While the exact usage and interpretation of this information depends
  on the specific repository, the following semantics apply when submitting to
  <code><b>cppget.org</b></code>.</p>

  <p>The section specifies the desired repository section to publish the
  project under. If not explicitly specified with the
  <code><b>--section</b></code> option, one of the <code><b>alpha</b></code>,
  <code><b>beta</b></code>, or <code><b>stable</b></code> values are
  automatically derived from the package version.</p>

  <p>The control repository URL is a publicly accessible, read-only URL to a
  version control repository (normally the same as the project's) that is used
  to authenticate the publisher as someone authorized to publish under this
  package name (currently only <code><b>git(1)</b></code> is supported).</p>

  <p>Prior to sending the submission request, the <code><b>publish</b></code>
  command adds the package archive checksum to the
  <code><b>build2-control</b></code> branch of the project's version control
  repository. Upon receiving the submission request, the archive repository
  either (1) associates the control repository with the package name if this
  is the first time this package name is published or (2) compares the
  submitted control repository to the previously associated and, if matching,
  queries the <code><b>build2-control</b></code> branch to verify that the
  submitter is authorized to publish this archive under this package name.</p>

  <p>Unless the control repository URL is specified with the
  <code><b>--control</b></code> option, it will be automatically derived from
  the version control's "remote" URL. In case of <code><b>git(1)</b></code>,
  it will be based on the <code><b>remote.origin.url</b></code> configuration
  value unless overridden with
  <code><b>remote.origin.build2ControlUrl</b></code> or
  <code><b>remote.origin.build2Url</b></code>. The special
  <code><b>none</b></code> value to the <code><b>--control</b></code> option
  can be used to disable this functionality.</p>

  <p>See <a
  href="../../brep/doc/build2-repository-interface-manual.xhtml#submit">Package
  Submission</a> for details on the submission request handling by archive
  repositories.</p>

  <p>If the <code><b>--forward</b></code> option is specified then the
  forwarded configurations are used to prepare the package distributions. In
  particular, this means that in this mode the project doesn't need to be
  initialized and all that's required is for package's source directories to
  be configured to forward to an out of source build configuration (see <a
  href="../../build2/doc/b.xhtml"><code><b>b(1)</b></code></a> for details on
  forwarded configurations). This, for example, can be used to publish
  packages that don't use the standard version.</p>

  <h1>PUBLISH OPTIONS</h1>

  <dl class="options">
    <dt><code><b>--yes</b></code>|<code><b>-y</b></code></dt>
    <dd>Don't prompt for confirmation before publishing.</dd>

    <dt><code><b>--control</b></code> <code><i>url</i></code></dt>
    <dd>Control repository URL for the packages being published.</dd>

    <dt><code><b>--repository</b></code> <code><i>url</i></code></dt>
    <dd>Repository to publish the packages to.</dd>

    <dt><code><b>--section</b></code> <code><i>name</i></code></dt>
    <dd>Repository section to publish the packages under.</dd>

    <dt><code><b>--author-name</b></code> <code><i>name</i></code></dt>
    <dd>Publisher's name. If unspecified, it will be obtained from the
    environment and/or version control system. See the ENVIRONMENT section for
    details.</dd>

    <dt><code><b>--author-email</b></code> <code><i>email</i></code></dt>
    <dd>Publisher's email address. If unspecified, it will be obtained from
    the environment and/or version control system. See the ENVIRONMENT section
    for details.</dd>

    <dt><code><b>--force</b></code> <code><i>check</i></code></dt>
    <dd>Force publishing, disabling the specified check. Repeat this option to
    disable multiple checks.</dd>

    <dt><code><b>--simulate</b></code> <code><i>outcome</i></code></dt>
    <dd>Simulate the specified outcome of the submission process without
    actually performing any externally visible actions (such as publishing the
    package). The commonly used outcome value is <code><b>success</b></code>.
    For other recognized outcomes refer to the submission service
    documentation.</dd>

    <dt><code><b>--forward</b></code></dt>
    <dd>Use the forwarded configuration for each package instead of the
    default configuration.</dd>

    <dt><code><b>--all</b></code>|<code><b>-a</b></code></dt>
    <dd>Use all build configurations.</dd>

    <dt><code><b>--config</b></code>|<code><b>-c</b></code> <code><i>dir</i></code></dt>
    <dd>Specify the build configuration as a directory.</dd>

    <dt><code><b>--directory</b></code>|<code><b>-d</b></code> <code><i>dir</i></code></dt>
    <dd>Assume project/package is in the specified directory rather than in
    the current working directory.</dd>

    <dt><code><b>--config-name</b></code>|<code><b>-n</b></code> <code><i>name</i></code></dt>
    <dd>Specify the build configuration as a name.</dd>

    <dt><code><b>--config-id</b></code> <code><i>num</i></code></dt>
    <dd>Specify the build configuration as an id.</dd>
  </dl>

  <h1>COMMON OPTIONS</h1>

  <p>The common options are summarized below with a more detailed description
  available in <a
  href="bdep-common-options.xhtml"><code><b>bdep-common-options(1)</b></code></a>.</p>

  <dl class="options">
    <dt><code><b>-v</b></code></dt>
    <dd>Print essential underlying commands being executed.</dd>

    <dt><code><b>-V</b></code></dt>
    <dd>Print all underlying commands being executed.</dd>

    <dt><code><b>--quiet</b></code>|<code><b>-q</b></code></dt>
    <dd>Run quietly, only printing error messages.</dd>

    <dt><code><b>--verbose</b></code> <code><i>level</i></code></dt>
    <dd>Set the diagnostics verbosity to <code><i>level</i></code> between 0
    and 6.</dd>

    <dt><code><b>--stdout-format</b></code> <code><i>format</i></code></dt>
    <dd>Representation format to use for printing to
    <code><b>stdout</b></code>.</dd>

    <dt><code><b>--jobs</b></code>|<code><b>-j</b></code> <code><i>num</i></code></dt>
    <dd>Number of jobs to perform in parallel.</dd>

    <dt><code><b>--progress</b></code></dt>
    <dd>Display progress indicators for long-lasting operations, such as
    network transfers, building, etc.</dd>

    <dt><code><b>--no-progress</b></code></dt>
    <dd>Suppress progress indicators for long-lasting operations, such as
    network transfers, building, etc.</dd>

    <dt><code><b>--diag-color</b></code></dt>
    <dd>Use color in diagnostics.</dd>

    <dt><code><b>--no-diag-color</b></code></dt>
    <dd>Don't use color in diagnostics.</dd>

    <dt><code><b>--bpkg</b></code> <code><i>path</i></code></dt>
    <dd>The package manager program to be used for build configuration
    management.</dd>

    <dt><code><b>--bpkg-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the package manager program.</dd>

    <dt><code><b>--build</b></code> <code><i>path</i></code></dt>
    <dd>The build program to be used to build packages.</dd>

    <dt><code><b>--build-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the build program.</dd>

    <dt><code><b>--curl</b></code> <code><i>path</i></code></dt>
    <dd>The curl program to be used for network operations.</dd>

    <dt><code><b>--curl-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the curl program.</dd>

    <dt><code><b>--pager</b></code> <code><i>path</i></code></dt>
    <dd>The pager program to be used to show long text.</dd>

    <dt><code><b>--pager-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the pager program.</dd>

    <dt><code><b>--options-file</b></code> <code><i>file</i></code></dt>
    <dd>Read additional options from <code><i>file</i></code>.</dd>

    <dt><code><b>--default-options</b></code> <code><i>dir</i></code></dt>
    <dd>The directory to load additional default options files from.</dd>

    <dt><code><b>--no-default-options</b></code></dt>
    <dd>Don't load default options files.</dd>
  </dl>

  <h1>DEFAULT OPTIONS FILES</h1>

  <p>See <a
  href="bdep-default-options-files.xhtml"><code><b>bdep-default-options-files(1)</b></code></a>
  for an overview of the default options files. For the
  <code><b>publish</b></code> command the search start directory is the
  project directory. The following options files are searched for in each
  directory and, if found, loaded in the order listed:</p>

  <pre>bdep.options
bdep-publish.options</pre>

  <p>The following <code><b>publish</b></code> command options cannot be
  specified in the default options files:</p>

  <pre>--directory|-d</pre>

  <h1>ENVIRONMENT</h1>

  <p>The <code><b>BDEP_AUTHOR_NAME</b></code> and
  <code><b>BDEP_AUTHOR_EMAIL</b></code> environment variables can be used to
  specify the publisher's name and email address, respectively. If not set,
  the <code><b>publish</b></code> command will first try to obtain the name
  and email from the version control system (if used) and then from the
  <code><b>USER</b></code> and <code><b>EMAIL</b></code> environment
  variables, respectively. See also the <code><b>--author-name</b></code> and
  <code><b>--author-email</b></code> options.</p>

  <h1>BUGS</h1>

  <p>Send bug reports to the
  <a href="mailto:users@build2.org">users@build2.org</a> mailing list.</p>

</div>

<div id="footer">
Copyright &#169; 2014-2024 the build2 authors.<br/>
Permission is granted to copy, distribute and/or modify this document under
the terms of the MIT License.
</div>

</body>
</html>
